class Solution {
public:
    int zm[26]={0};
    bool check(){
        for(int i=0;i<26;i++){
            if(zm[i]!=0) return false;
        }
        return true;
    }
    vector<int> findAnagrams(string s, string p) {
        for(int i=0;i<p.size();i++) zm[p[i]-'a']++;
        int sz=p.size();
        int szi=s.size();
        vector<int> ans;
        if(sz>szi) return ans;
        for(int i=0;i<sz;i++) zm[s[i]-'a']--;
        if(check()) ans.push_back(0);
        for(int i=1;i<=szi-sz;i++){
            zm[s[i-1]-'a']++;
            zm[s[sz+i-1]-'a']--;
            if(check()) ans.push_back(i);
        }
        return ans;
    }
};